home *** CD-ROM | disk | FTP | other *** search
- import _xkb
- import tree
- import string
- import os
-
- class XKB:
- def __init__ (self):
- self.rules = _xkb.list_rules ()
-
- def getRules (self):
- return self.rules
-
- def getModels (self):
- return self.rules[0]
-
- def getLayouts (self):
- return self.rules[1]
-
- def getVariants (self):
- return self.rules[2]
-
- def getOptions (self):
- keys = self.rules[3].keys (); keys.sort ()
- groups = ()
- for x in keys:
- groups = tree.merge (groups, string.split (x, ":"))
- return (groups, self.rules[3])
-
- def setRule (self, model, layout, variant, options):
- if model == None: model = ""
- if layout == None: layout = ""
- if variant == None: variant = ""
- if options == None: options = ""
-
- args = ()
-
- if (model):
- args = args + ("-model", model)
- if (layout):
- args = args + ("-layout", layout)
- if (variant):
- args = args + ("-variant", variant)
-
- path = ("/usr/X11R6/bin/setxkbmap",)
- if (os.fork () == 0):
- os.execv (path[0], path + args)
-
- return
-
- # don't use any of our code, since it seems to corrupt
- # lots of memory
- return _xkb.set_rule (model, layout, variant, options)
-
-
-
- def getRulesBase (self):
- return _xkb.get_rulesbase ()
-
-